#include <iostream>

using std::cout;
using std::endl;

double divide(double x, double y)
{
    if(y == 0) {
        throw "除数为0";//在确定出现异常的地方，抛出异常
    } else 
        return x / y;
}

//C++的异常处理方式，对代码的逻辑造成了很大影响
//写出来的代码不够优雅，有些公司直接禁止使用异常,比如google
//了解即可

int main()
{
    double a = 100, b = 1;
    //try...catch语句块来对可能有异常的语句进行捕获
    try {
        cout << "divide(a, b): " << divide(a, b) << endl;
    } catch(const char *) {//该分支捕获C风格字符串类型
        cout << "除数不能为0" << endl;
    } catch(double d) {//捕获double类型的数据
        cout << d << endl;
    }
    return 0;
}

